//
//  QueueArray.c
//  DataStruct
//
//  Created by vase on 2022/3/22.
//

#include "QueueArray.h"

/** 顺序存储的队列的初始化函数*/
QueueArray* initQueueArray(void) {
    QueueArray *queue = (QueueArray *)malloc(sizeof(QueueArray));
    //设置队列的初始化情况
    queue->head = queue->tail = 0;
    return queue;
}

/** 元素入队*/
void pushQueueArray(QueueArray *queue, ElementType item) {
    if (queue->tail >= QueueLen) {
        return; //数据溢出
    }
    //尚未超出约定范围, 添加元素
    queue->data[queue->tail++] = item;
}

/** 元素出队*/
ElementType popQueueArray(QueueArray *queue) {
    if (queue->head == queue->tail) {
        return QueueArrayError;  //队列为空，可能是伪溢出
    }
    return queue->data[queue->head++];
}

/** 判断队空*/
int isEmpty(QueueArray *queue) {
    if (queue->head == queue->tail) {
        return 1; //队列为空
    }else {
        return 0; //队列不为空
    }
}

/** 判断队满*/
int isFullFilled(QueueArray *queue) {
    if (queue->tail >= QueueLen) {
        return 1; //队列满
    }else {
        return 0; //队列不满
    }
}
